feat: multi level navigation#2570
Conversation
❌ 1 Tests Failed:
View the full list of 1 ❄️ flaky test(s)
To view more test analytics, go to the Test Analytics Dashboard |
Greptile SummaryThis PR introduces a full 3D LiDAR-based navigation stack for the Unitree Go2, wiring together point-cloud registration, a ray-tracing voxel map, an MLS surface planner (Rust), and a pure-pursuit path follower.
Confidence Score: 5/5Safe to merge; no P0/P1 issues found across the full diff. The incremental Dijkstra region update is guarded by live-node filtering, the robot_search radius bug and string_pull baseline bug from the prior review are both confirmed fixed, and the worker/handle split is sound. The only findings are two P2 items (unguarded tag access and non-unit quaternion packing) that do not block correctness of the core navigation stack. dimos/mapping/ray_tracing/rust/src/main.rs uses a w=0 non-unit quaternion in PoseStamped to carry cylinder bounds — any middleware that normalises the quaternion will silently corrupt the values. dimos/navigation/nav_3d/mls_planner/transformer.py should guard the region_bounds tag access. Important Files Changed
Reviews (10): Last reviewed commit: "Bug fix" | Re-trigger Greptile |
leshy
left a comment
There was a problem hiding this comment.
just one question around AI / normal mode switcher
aclauer
left a comment
There was a problem hiding this comment.
How come this was introduced? generally we never run in "normal" mode - only way we ever used go2 is in sport mode
Yeah it isn't strictly necessary, but probably good to have a way to configure. For example, "AI" mode is actually deprecated as of firmware < 1.1.6 and "MCF" is the new string.
02f42cf to
c25585b
Compare
Problem
3d navigation and ray tracing integration
Closes DIM-XXX
Solution
Creates a blueprint using ray tracing and mls planner, plus improvements to other modules. Click and point to navigate to goals.
Ray tracer:
Planner:
Other things:
How to Test
build native modules:
run! (on jetson on go2)
other things not tested but would be awesome to try:
Contributor License Agreement